Python is becoming increasingly popular as a scientific programming 
language\cite{py4science} and the inclusion of packages such as 
NumPy\cite{numpy} makes Python an attractive language for science since it 
combines ease-of-programming with high numerical performance. Naturally 
scientific computing often requires parallel execution to achieve acceptable 
performance. Several APIs for parallel execution in Python exists, 
including standard MPI. Unfortunately many APIs, including MPI, counters 
the ease-of-programming that made Python attractive in the first place 
and the scientist is better off reverting to classic compiled languages 
such as C or Fortran. Other higher level parallel programming APIs are 
available, most predominantly Parallel Python\cite{ParallelPython}, 
unfortunately this is only usable for embarrassingly parallel applications.

pyOODSM is a new system that seeks to enable scientist to write parallel 
python programs as if she was using a multi-threaded shared memory platform. 
It follows a long line of object based distributed objects languages, 
including Emerald\cite{Emerald} and Orca\cite{orca}. In PyOODSM objects that 
are instances of classes that extend a special DSMclass, may be accessed 
by any process in a parallel execution and objects are migrated between 
processes, and even nodes on a cluster, with full transparency towards 
the user.

Since pyOODSM is written entirely in Python it is extremely portable and 
should run on any platform that supports Python, it has been tested with 
standard C Python under Windows, Linux and Mac OS-X and the Iron Python 
distribution for the .Net platform and no changes were required to either 
pyOODSM or the test applications to run on any of the platforms. pyOODSM 
should even run on a network of heterogeneous Python versions, though 
this has not been thoroughly tested.

